package org.anachronos.jeep.agent;

import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.UnmodifiableClassException;
import java.util.jar.JarFile;

public interface InstrumentationJdk6 {
	
	void addTransformer(ClassFileTransformer transformer, boolean canRetransform);

	void appendToBootstrapClassLoaderSearch(JarFile jarFile);

	void appendToSystemClassLoaderSearch(JarFile jarFile);

	boolean isModifiableClass(Class<?> clazz);

	boolean isNativeMethodPrefixSupported();

	boolean isRetransformClassesSupported();

	void retransformClasses(Class<?>... classes)
			throws UnmodifiableClassException;

	void setNativeMethodPrefix(ClassFileTransformer transformer, String prefix);
}
